package com.atguigu.gmall.payment.service;

import com.atguigu.gmall.enums.model.PaymentType;
import com.atguigu.gmall.order.model.OrderInfo;
import com.atguigu.gmall.payment.model.PaymentInfo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Map;

public interface PaymentInfoService extends IService<PaymentInfo> {

    /**
     * 保存交易记录
     * @param orderInfo 订单信息 基于订单构建本地交易记录
     * @param paymentType 支付类型（1：微信 2：支付宝）
     */
    void savePaymentInfo(OrderInfo orderInfo, String paymentType);

    /**
     * 查询本地交易记录
     * @param outTradeNo 订单编号
     * @param paymentType 支付方式
     * @return
     */
    PaymentInfo getPaymentInfo(String outTradeNo, String paymentType);

    /**
     * 修改订单状态
     * @param outTradeNo
     * @param name
     * @param paramsMap
     */
    void paySuccess(String outTradeNo, String name, Map<String, String> paramsMap);

    /**
     * 修改本地交易记录状态为关闭
     * @param orderId
     */
    void closePayment(Long orderId);

    /**
     * 根据订单Id支付方式查询本地交易记录
     * @param orderId
     * @param paymentType
     * @return
     */
    PaymentInfo getPaymentInfo(Long orderId, String paymentType);
}
